﻿var Validations = Validations || {};

function validaCuit(cuit) {
    if (typeof (cuit) == 'undefined')
        return true;
        
    cuit = cuit.toString().replace(/[-_]/g, "");
    
    if (cuit == '')
        return -1; //No estamos validando si el campo esta vacio, eso queda para el "required"
        
    if (cuit.length != 11)
        return -1;
    else {
        if(cuit == '00000000000') {
            return 1;
        }
    
        var mult = [5, 4, 3, 2, 7, 6, 5, 4, 3, 2];
        var total = 0;
        for (var i = 0; i < mult.length; i++) {
            total += parseInt(cuit[i]) * mult[i];
        }
        var mod = total % 11;
        var digito = mod == 0 ? 0 : mod == 1 ? 9 : 11 - mod;
    }
    
    return digito == parseInt(cuit[10]);
}

function maxLen(val, len) {
    if(typeof val === 'undefined')
        return -1;
        
    if(typeof len === 'string') {
        len = parseInt(len);
    }
        
    return val.length <= len;
}

function minLen(val, len) {
    if(typeof val === 'undefined')
        return -1;
        
    if(typeof len === 'string') {
        len = parseInt(len);
    }
        
    return val.length >= len;
}

function req(val) {
    if(typeof val === 'undefined')
        return -1;
        
    if(typeof len === 'string') {
        len = parseInt(len);
    }
        
    return val.length > 0;
}

function email(val)
{
    if(typeof val === 'undefined' || val.length == 0) {
        return -1;
    }

    // creamos nuestra regla con expresiones regulares.
    var filter = /[\w-\.]{3,}@([\w-]{2,}\.)*([\w-]{2,}\.)[\w-]{2,4}/;
    // utilizamos test para comprobar si el parametro valor cumple la regla
    if(filter.test(val))
        return 1;
    else
        return 0;
}

Validations["cuit"] = {
    v: validaCuit, 
    m: "Cuit inválido"
};

Validations["max"] = {
    v: maxLen, 
    m: "Longitud máxima excedida"
};

Validations["min"] = {
    v: minLen, 
    m: "Longitud mínima requerida"
};

Validations["req"] = {
    v: req, 
    m: "Campo obligatorio"
};

Validations["mail"] = 
Validations["email"] = {
    v: email, 
    m: "Correo incorrecto"
};